#!/usr/bin/env node
/**
 * Judger程序主入口
 * 从标准输入读取战斗输入状态数据, 生成AI命令并输出到标准输出
 */
const api = require('./api')
const game = require('./game');

/**
 * 主函数
 * 从标准输入读取战斗输入状态数据, 生成AI命令并输出到标准输出
 */
function main() {
    try {
        // 从标准输入读取数据
        let inputData = '';
        process.stdin.setEncoding('utf8');

        process.stdin.once('data', function(chunk) {
            inputData += chunk;
            try {
                // 解析输入状态
                const inputState = api.io.parseInputState(inputData);
                // 生成本回合游戏命令集合
                const commands = game.main(inputState);
                // 格式化并输出命令集合
                const outputData = api.io.formatOutputCommands(commands);
                api.io.output(outputData, process.stdout, true);
            } catch (error) {
                const errorStack = error.stack || error.message;
        api.io.output(`程序执行错误: ${errorStack}`, process.stderr);
        api.io.output('[]', process.stdout, true);
                process.exit(1);
            }
        });

    } catch (error) {
        const errorStack = error.stack || error.message;
        api.io.output(`程序执行错误: ${errorStack}`, process.stderr);
        api.io.output('[]', process.stdout, true);
        process.exit(1);
    }
}

if (require.main === module) {
    main();
}

module.exports = { main };
